Note: The solution set must not contain duplicate subsets.
For example,
If nums = [1,2,3], a solution is:
思路
这是一个非常巧妙的思路,因为对于子集来说,每个元素只有2种状态:在子集中,不在子集中
这刚好符合2进制,可以考虑使用bitmap的方法。
0:在当前子集中
1:不在当前子集中
对于n个元素,一共有2^n种取法,这和子集数也是一致的。
拿2个元素{1,2}举例:
01 ——> [1] //取1
10 ——> [2] //取2
11 ——> [1,2] //取1,2
刚好可以取尽所有元素。
用回溯法,因为是子集,[1,2]和[2,1]一样,所以我们的每次递归的停止条件都是到nums[]中的最后一个元素。